C++ 使用getline c+;将每一行输入存储在一个数组中+;
我使用getline获取输入,我想将每一行输入存储到一个数组中,这样我就可以调用特定的数组内容进行进一步处理。有什么想法吗?提前谢谢C++ 使用getline c+;将每一行输入存储在一个数组中+;,c++,arrays,dynamic,input,getline,C++,Arrays,Dynamic,Input,Getline,我使用getline获取输入,我想将每一行输入存储到一个数组中,这样我就可以调用特定的数组内容进行进一步处理。有什么想法吗?提前谢谢 string line; while (true) { getline(cin, line); if (line.empty()) { break; } // code } 编辑/添加 有人知道为什么我不能在while循环之前使用cin?例如,当我把 cin>>var1在循环之前,它根本不会进入循环内部 回
string line;
while (true) {
getline(cin, line);
if (line.empty()) {
break;
}
// code
}
编辑/添加
有人知道为什么我不能在while循环之前使用cin
?例如,当我把
cin>>var1代码>在循环之前,它根本不会进入循环内部
回答我自己
我发现它解决了 最简单的解决方案是使用向量容器:
std::vector<std::string> arr;
最简单的解决方案是使用向量容器:
std::vector<std::string> arr;
最简单的解决方案是使用向量容器:
std::vector<std::string> arr;
最简单的解决方案是使用向量容器:
std::vector<std::string> arr;
使用向量向量向量机代码>
从文件中读取的更好方法如下
string line;
while (getline(cin, line)) {
if (line.empty()) {
break;
}
vec.push_back(line);
// code
}
一旦达到EOF,循环将中断…使用向量向量向量代码>
从文件中读取的更好方法如下
string line;
while (getline(cin, line)) {
if (line.empty()) {
break;
}
vec.push_back(line);
// code
}
一旦达到EOF,循环将中断…使用向量向量向量代码>
从文件中读取的更好方法如下
string line;
while (getline(cin, line)) {
if (line.empty()) {
break;
}
vec.push_back(line);
// code
}
一旦达到EOF,循环将中断…使用向量向量向量代码>
从文件中读取的更好方法如下
string line;
while (getline(cin, line)) {
if (line.empty()) {
break;
}
vec.push_back(line);
// code
}
一旦达到EOF,循环将中断…std::vector
是您的朋友。顺便问一下,您真的想在第一个空行上完全停止处理输入吗?还是忽略这句话?另外,我建议将getline
移动到循环条件中,以便您阅读并立即检查它是否成功:while(std::getline(std::cine,line)){…}
。是的,只要用户给出输入,我就想得到输入,然后用空行向程序发出信号,表示没有更多输入,除了在用户输入最后一个输入时提示用户按enter键两次之外,我想不出更好的方法了…std::vector
是您的朋友。顺便问一下,您真的想在第一个空行上完全停止处理输入吗?还是忽略这句话?另外,我建议将getline
移动到循环条件中,以便您阅读并立即检查它是否成功:while(std::getline(std::cine,line)){…}
。是的,只要用户给出输入,我就想得到输入,然后用空行向程序发出信号,表示没有更多输入,除了在用户输入最后一个输入时提示用户按enter键两次之外,我想不出更好的方法了…std::vector
是您的朋友。顺便问一下,您真的想在第一个空行上完全停止处理输入吗?还是忽略这句话?另外,我建议将getline
移动到循环条件中,以便您阅读并立即检查它是否成功:while(std::getline(std::cine,line)){…}
。是的,只要用户给出输入,我就想得到输入,然后用空行向程序发出信号,表示没有更多输入,除了在用户输入最后一个输入时提示用户按enter键两次之外,我想不出更好的方法了…std::vector
是您的朋友。顺便问一下,您真的想在第一个空行上完全停止处理输入吗?还是忽略这句话?另外,我建议将getline
移动到循环条件中,以便您阅读并立即检查它是否成功:while(std::getline(std::cine,line)){…}
。是的,只要用户给出输入,我就想得到输入,然后用空行向程序发出信号,表示没有更多输入,我想不出比在用户输入最后一次输入时提示用户按enter键两次更好的方法了……太好了!谢谢大家的回答,我只是想了解一下std::vector的窍门。假设将getline输入存储到vec后,我想将某些字符串(vec[0]等)转换为int或double,这可以在vec中完成,还是必须初始化新的变量或向量?谢谢不,vectorstringstream
内无法完成的转换非常方便。请检查,谢谢,我会查看并让您知道;)我想我应该使用intvar1=atoi(vec[0]),而不是使用stringstream代码>或int var1=atoi(向量为[0])代码>但是它们都不起作用…有什么想法吗?这里写的是为了避免像“谢谢”这样的评论,但是。。你这个哈迪斯大人!!祝你今天愉快伟大的谢谢大家的回答,我只是想了解一下std::vector的窍门。假设将getline输入存储到vec后,我想将某些字符串(vec[0]等)转换为int或double,这可以在vec中完成,还是必须初始化新的变量或向量?谢谢不,vectorstringstream
内无法完成的转换非常方便。请检查,谢谢,我会查看并让您知道;)我想我应该使用intvar1=atoi(vec[0]),而不是使用stringstream代码>或int var1=atoi(向量为[0])代码>但是它们都不起作用…有什么想法吗?这里写的是为了避免像“谢谢”这样的评论,但是。。你这个哈迪斯大人!!祝你今天愉快伟大的谢谢大家的回答,我只是想了解一下std::vector的窍门。假设将getline输入存储到vec后,我想将某些字符串(vec[0]等)转换为int或double,这可以在vec中完成,还是必须初始化新的变量或向量?谢谢不,vectorstringstream
内无法完成的转换非常方便。请检查,谢谢,我会查看并让您知道;)我想我应该使用intvar1=atoi(vec[0]),而不是使用stringstream代码>或int var1=atoi(向量为[0])代码>但是它们都不起作用…有什么想法吗?这里写的是为了避免像“谢谢”这样的评论,但是。。你这个哈迪斯大人!!祝你今天愉快伟大的谢谢大家的回答,我只是想了解一下std::vector的窍门。假设在存储getline输入之后