读取整数行到向量中

时间:2012-10-08 05:43:19

标签: c++ vector while-loop std

请查看以下代码

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;
    }
}

我在这里尝试的是这样的

  1. 输入数字列表(例如:1 2 3 4 5 6 7 8 9 0 11)
  2. 将所有这些内容读入矢量
  3. 打印
  4. 在这里,当我点击进入时,什么也没发生!好像循环没有退出。点击输入后如何打印值?

    更新

    我将代码编辑为答案中的建议。

    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;
        }
    }
    

    但现在又出现了另一个错误

    "/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)
    

1 个答案:

答案 0 :(得分:10)

使用getline从cin读取一行到一个字符串。然后将该字符串放入istringstream。然后从istringstream开始,取代您现在使用cin的位置。

std::string line;
getline(std::cin, line);
std::istringstream iss(line);
while (iss >> enterNumber)
{
    numbers.push_back(enterNumber);
}