[英]Why doesn't getline(cin, var) after cin.ignore() read the first character of the string?
[英]std::getline ignores first character when taking multiple string inputs and string subscript goes out of range when not using cin.ignore()
當我使用 cin.ignore() 時,我可以接受所有輸入,但在第一個輸入之后我丟失了所有字符串的第一個字符。
如果我不使用 cin.ignore() 我得到一個字符串下標超出范圍運行時錯誤
這是供參考的代碼
std::vector<std::string> input;
for (int i = 0; i < 5; i++)
{
std::string lines;
std::cin.ignore();
std::getline(std::cin,lines,'\n');
input.push_back(lines);
}
您是什么意思“獲取字符串下標超出范圍運行時錯誤”? 我注釋掉代碼“ std::cin.ignore();
”,程序運行正常。 function getline
將丟棄 char '\n'。
我測試了你提供的這些代碼,如果我注釋掉 cin.ingnore,它運行正常。 這是代碼:
#include<iostream>
#include<vector>
#include<string>
using namespace std;
int main() {
std::vector<std::string> input;
for (int i = 0; i < 5; i++)
{
std::string lines;
//std::cin.ignore();
std::getline(std::cin, lines, '\n');
input.push_back(lines);
}
for (auto s : input) {
cout << endl << s;
}
}
也許你應該檢查你的代碼,看看是否還有其他錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.