2017-08-27 33 views
-2

我正在尝试构建一个字符串向量。 某些字符串还包含空格。 这就是为什么我使用getline(cin,string_name)。 我的代码看起来像如何建立一个字符串向量(包含空格)?

 for(int i=0;i<n;++i) 
     { 
      getline(cin, s); 
      vec.push_back(s); 

     } 

当我正在输入

ADAM BOB JOHNSON 

它取两个输入字后停止,并显示矢量内容

(HERE SPACE IS DISPLAYED)ADAM BOB 

是什么意思。它是否将NULL字符串作为第一个字符串的输入? 如果有人告诉我如何取出字符串并显示它,这将非常有帮助。谢谢。

+0

这是哪一种语言?和“某种错误”?这个错误是什么? – Yazan

+3

请提供一个[mcve],这是不可能重现您的问题只是这个代码片段 – UnholySheep

+0

对不起,这是没有任何错误,但没有给予预期的输出@ Yazan –

回答

0

Abhijit, 您的信息显然不够。假设代码是在C++编写的,我在此测试CPP:

​​

编译时g ++以及与输入“ADAM BOB JOHNSON”串馈送它。一切按计划进行,其输出与输入完全相同。所以我可以在这里看到没有错误。

对不起,由于到目前为止信誉不足,无法对其进行评论。


UPD:发现问题。 getline先得到'\ n',我们在'3'后面(这是std :: cin >> n所需要的),因此,你只需要忽略一个字符串。代码:

#include <iostream> 
#include <vector> 
#include <string> 

int main() 
{ 
    int n; 
    std::cin >> n; 


    std::vector<std::string> vec; 
    std::string s; 
    std::getline(std::cin, s); 

    for(int i = 0; i < n; ++i) 
    { 
     std::getline(std::cin, s); 
     vec.push_back(s); 

     // std::cout << vec.at(i) << std::endl; 
    } 
    for(int i=0;i<n;++i){ 

     std::cout << vec[i] <<" " << std::endl; 
    } 




    return 0; 

} 

适合我。

而且,@ pmaxim98首先表示抱歉,编辑回复并没有看到您的评论。

+0

是的它在循环内部正确打印,但是当在推动搅拌棒后再次在vecor上重复时,它没有显示第三次搅拌并在第一次位置显示空间。 –

+0

这是我面临的问题:https://ideone.com/Ak5jDE –

+0

任何人都可以帮我在这里吗? –

相关问题