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);
}
}
我试图循环遍历这个字符串向量并删除不是空格的字符并将它们添加到另一个向量中,在我脑海中这个函数应该可以工作,但它似乎不会被困在某种循环中。
此刻打印出的字样为:
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 :(得分: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
答案 1 :(得分: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;
}