2013-11-20 2 views
0
void getWords() 
{ 
    string line; 
    for (int i=0; i<assemb.size(); i++) 
    { 
     for (int word=0; word<assemb.at(i).size(); word++) 
     { 
      if (assemb.at(i).at(word) != ' ') 
      { 
        getline(cin,line); 
      }  

     } 
     fixedWords.push_back(line); 
    } 
} 

Я пытаюсь пропустить этот вектор строк и удалить символы, которые не являются пробелами, и добавить их в другой вектор, в моей голове эта функция должна работать, но она не работает, t, похоже, попадает в какую-то петлю.Цитирование по строкам в векторе и удалении пробелов

Слова, которые в данный момент распечатке как:

  VAR 0  
START: LDN NUM01 
      SUB NUM02 
      STO MYSUM 
      LDN MYSUM 
      STO MYSUM 
END:  STP   
NUM01: VAR 1025  
NUM02: VAR 621  
MYSUM: VAR 0 

Однако я хочу, чтобы они были:

-Var0 
-Start: 
-LDN 
-NUM01 
-SUB 
-NUM02 
-STO 
-MYSUM 
-LDN 
-MYSUM 
-STO 
-MYSUM 
-END: 
-STP 
-NUM01 
-VAR 
-1025 
-NUM02 
-VAR 
-621 
-MYSUM 
-0 

Это часть программы на ассемблере, которая занимает часть ассемблере витков он в двоичные команды, а затем вводит это в другую написанную мной программу, которая умеет читать и выполнять двоичные команды.

+0

Исправьте, если это редактирование шахты неправильный – P0W

+0

Нет, это именно то, что я хотел поблагодарить вас. – Shaun1810

ответ

0

Как об этом:

#include <iostream> 
#include<vector> 
#include<algorithm> 
#include<iterator> 
//#include<fstream> 

using namespace std; 

int main() { 

std::vector<std::string> vec; 
// std::ifstream fin("input.txt"); 
std::copy(std::istream_iterator<std::string>(std::cin), //fin 
      std::istream_iterator<std::string>(), 
      std::back_inserter(vec)); 

for(auto v:vec) 
    std::cout<<"-"<<v<<std::endl; 
return 0; 
} 

Заменить std::cin с std::ifstream для файла

См here

0

Похоже, что вы хотите, довольно близко к этому:

std::copy(std::istream_iterator<std::string>(std::cin), 
      std::istream_iterator<std::string>(), 
      std::ostream_iterator<std::string>(std::cout, "\n")); 

разница в том, что это не добавляет - в начале каждой строки. Чтобы сделать это, мы можем использовать transform вместо copy:

#include <string> 
#include <algorithm> 
#include <iostream> 
#include <iterator> 

int main() { 
    std::transform(std::istream_iterator<std::string>(std::cin), 
     std::istream_iterator<std::string>(), 
     std::ostream_iterator<std::string>(std::cout, "\n"), 
     [](std::string const &in) { return "-" + in; }); 
    return 0; 
} 
Смежные вопросы