Reading line of integers into a vector(将整行整数读入向量)
问题描述
请看下面的代码
int main()
{
    cout << "Enter numbers (-1 to stop entering; -2 to exit)" << endl;
    while(cin>>enterNumber)
    {
     numbers.push_back(enterNumber);
    }
    for(size_t size=0;size<numbers.size();size++)
    {
        cout << numbers[size] << endl;
    }
}
我在这里尝试做的是这样的
What I am trying to do here is something like this
- 输入数字列表(例如:1 2 3 4 5 6 7 8 9 0 11)
- 将它们全部读入向量
- 打印它们
在这里,当我按回车键时,什么也没有发生!似乎循环没有退出.当我按下回车键时如何打印值?
In here, when I hit enter, nothing is happening! Seems like the loops didn't exit. How to print the values when I hit the enter?
更新
我按照答案中给出的建议编辑了代码.
I edited the code as advises given in answers.
int main()
{
    cout << "Enter numbers (-1 to stop entering; -2 to exit)" << endl;
    std::string line;
getline(std::cin, line);
std::istringstream iss(line);
while (iss >> enterNumber)
{
    numbers.push_back(enterNumber);
}
    for(size_t size=0;size<numbers.size();size++)
    {
        cout << numbers[size] << endl;
    }
}
但它现在给出了另一个错误
but it gives another error now
"/usr/bin/make" -f nbproject/Makefile-Debug.mk QMAKE= SUBPROJECTS= .build-conf
make[1]: Entering directory `/cygdrive/c/Users/yohan/Documents/NetBeansProjects/Excersice 6'
"/usr/bin/make"  -f nbproject/Makefile-Debug.mk dist/Debug/Cygwin-Windows/excersice_6.exe
make[2]: Entering directory `/cygdrive/c/Users/yohan/Documents/NetBeansProjects/Excersice 6'
mkdir -p build/Debug/Cygwin-Windows
rm -f build/Debug/Cygwin-Windows/Multiple.o.d
g++    -c -g -MMD -MP -MF build/Debug/Cygwin-Windows/Multiple.o.d -o build/Debug/Cygwin-Windows/Multiple.o Multiple.cpp
Multiple.cpp: In function `int main()':
Multiple.cpp:22: error: variable `std::istringstream iss' has initializer but incomplete type
Multiple.cpp:60:3: warning: no newline at end of file
make[2]: *** [build/Debug/Cygwin-Windows/Multiple.o] Error 1
make[1]: *** [.build-conf] Error 2
make: *** [.build-impl] Error 2
nbproject/Makefile-Debug.mk:78: recipe for target `build/Debug/Cygwin-Windows/Multiple.o' failed
make[2]: Leaving directory `/cygdrive/c/Users/yohan/Documents/NetBeansProjects/Excersice 6'
nbproject/Makefile-Debug.mk:61: recipe for target `.build-conf' failed
make[1]: Leaving directory `/cygdrive/c/Users/yohan/Documents/NetBeansProjects/Excersice 6'
nbproject/Makefile-impl.mk:39: recipe for target `.build-impl' failed
BUILD FAILED (exit value 2, total time: 1s)
推荐答案
使用 getline.然后将该字符串放入istringstream.然后从 istringstream 中读取,而不是你现在使用 cin 的地方.
Read in a line from cin into a string using getline.  Then put that string into an istringstream.  Then read from that istringstream in place of where you're using cin now.
std::string line;
getline(std::cin, line);
std::istringstream iss(line);
while (iss >> enterNumber)
{
    numbers.push_back(enterNumber);
}
这篇关于将整行整数读入向量的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:将整行整数读入向量
 
				
         
 
            
        - STL 中有 dereference_iterator 吗? 2022-01-01
- 一起使用 MPI 和 OpenCV 时出现分段错误 2022-01-01
- 如何对自定义类的向量使用std::find()? 2022-11-07
- 近似搜索的工作原理 2021-01-01
- Stroustrup 的 Simple_window.h 2022-01-01
- C++ 协变模板 2021-01-01
- 静态初始化顺序失败 2022-01-01
- 使用/clr 时出现 LNK2022 错误 2022-01-01
- 与 int by int 相比,为什么执行 float by float 矩阵乘法更快? 2021-01-01
- 从python回调到c++的选项 2022-11-16
 
						 
						 
						 
						 
						 
				 
				 
				 
				