C++ 在使用getline读取文件时将值迭代到向量中
我正在尝试创建一个向量,该向量填充了“blokus tiles”(周期或星星的tiles,维度为5x5)文件中每个字符串行的大小。该文件作为字符串向量向量读入C++ 在使用getline读取文件时将值迭代到向量中,c++,vector,C++,Vector,我正在尝试创建一个向量,该向量填充了“blokus tiles”(周期或星星的tiles,维度为5x5)文件中每个字符串行的大小。该文件作为字符串向量向量读入 vector <std::string> tile vector <vector<string>> alltiles 这看起来不错。但是,我尝试通过以下方式将数字列表转换为向量: if (infile.is_open()) { //infile is open only if 3 or 4 ar
vector <std::string> tile
vector <vector<string>> alltiles
这看起来不错。但是,我尝试通过以下方式将数字列表转换为向量:
if (infile.is_open()) { //infile is open only if 3 or 4 arguments
int i = 0;
while (std::getline(infile, tileline)) {
for (int i=0; i <= tileline.end(); i++) {
vector <int> sizenums;
sizenums[i] = tileline.length();
i++;
cout << sizenums << std::endl;
}
//cout << actualtilesize << std::endl;
}
tile.push_back(tileline);
alltiles.push_back(tile);
}
infile.close();
std::ofstream outfile;
outfile.open(arginfile);
for (auto e: tile) {
cout << e << std::endl;
}
if(infle.is_open()){//infle仅当3或4个参数时才打开
int i=0;
while(std::getline(infle,tileline)){
对于(int i=0;i两件事,您需要在向量上迭代以打印出它的内容,并且不能使用sizenums[i]=tileline.length();
因为向量刚刚初始化,所以必须使用类似于sizenums.push_的内容(tileline.length());
但是你使用它的方式还是错误的,每次循环时你都在重新初始化变量,因此你只是用它来临时存储一个变量。相反,如果你想实际存储每一行的长度,那么你需要将它移到循环之外。我不知道你为什么把I++;
放在那里n、 这似乎没有必要
for (int i=0; i <= tileline.end(); i++) {
vector <int> sizenums;
sizenums[i] = tileline.length();
不要手动增加循环变量。for循环已经处理了这个问题。您必须迭代向量。请参阅:谢谢!这很有意义。我使用push_back,将向量置于for和while循环之外,并在tileline.end()前面放置一个解引用操作符。我以前肯定错过了额外的I++程序,谢谢你指出。这很有效,只是它似乎只打印了文件的最后一行(正在修复)。谢谢!
if (infile.is_open()) { //infile is open only if 3 or 4 arguments
int i = 0;
while (std::getline(infile, tileline)) {
for (int i=0; i <= tileline.end(); i++) {
vector <int> sizenums;
sizenums[i] = tileline.length();
i++;
cout << sizenums << std::endl;
}
//cout << actualtilesize << std::endl;
}
tile.push_back(tileline);
alltiles.push_back(tile);
}
infile.close();
std::ofstream outfile;
outfile.open(arginfile);
for (auto e: tile) {
cout << e << std::endl;
}
for (int i=0; i <= tileline.end(); i++) {
vector <int> sizenums;
sizenums[i] = tileline.length();
vector<int> sizenums;
vector <int> sizenums;
...
for (int i=0; i <= tileline.end(); i++) {
sizenums.push_back(tileline.length());
for(int i ...
...
i++;