2017-08-27 603 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

任何人都可以幫我在這裏嗎? –

相關問題