早些时候,我发布了一个关于cin跳过input的问题,我得到的结果是刷新,并使用istringstream ,但现在我尝试了所有可能的解决scheme,但没有一个工作。 这里是我的代码: void createNewCustomer () { string name, address; cout << "Creating a new customer…" << endl; cout << "Enter the customer's name: "; getline(cin, name); cout << "Enter the customer's address: "; getline(cin, address); Customer c(name, address, 0); CustomerDB::addCustomer(c); cout << endl; } 但我仍然得到同样的东西,跳过input,当它确实需要input时,它将把它们和名字存储在空的地方,并且在地址上,我把它写在名字上,但从第二个字母到结尾 我的代码有什么问题? 我尝试了cin.ignore() , cin.get()和cin.clear()所有这些都一起,独自一人,没有一个工作 编辑: main.cpp中的main方法仅调用mainMenu() void mainMenu () […]
从Stroustrup的TC ++ PL第3版第21.3.3节: 如果我们尝试读入variablesv并且操作失败,则v的值应该保持不变(如果v是istream或ostream成员函数处理的types之一,则不变)。 下面的例子似乎与上面的引用相矛盾。 根据上面的报价,我期待v的价值保持不变 – 但它被归零。 这种明显的矛盾行为的解释是什么? #include <iostream> #include <sstream> int main( ) { std::stringstream ss; ss << "The quick brown fox."; int v = 123; std::cout << "Before: " << v << "\n"; if( ss >> v ) { std::cout << "Strange — was successful at reading a word into an […]
如何清除C ++中的cin缓冲区?
我已经指出了一个失败,我的程序,阻止我分配一个值的variablesaddAntonymAnswer1 。 我已经尝试了在语句之前运行cin.clear() ,以便读取我的yes/no回答,但是代码不会回应。 失败的程序位于void dictionaryMenu(vector <WordInfo> &wordInfoVector)并读取 cin.clear(); cout<<">"; cin>>addAntonymAnswer1; // cin reading STUCK, why!? 要到达程序的那一点,用户必须select添加一个单词,然后添加一个同义词。 运行程序的input是: dictionary.txt 1 cute 2 hello 3 ugly 4 easy 5 difficult 6 tired 7 beautiful synonyms 1 7 7 1 3 2 antonyms 1 3 3 1 7 4 5 5 4 7 3 #include <iostream> #include […]
我一直在使用“加速C ++”在夏天学习C ++,并且有一个我似乎并没有正确理解的概念。 为什么是 int x; if (cin >> x){} 相当于 cin >> x; if (cin){} 通过查看代码,在我看来,我们使用cin作为variables。 但是,我认为这是一个function。 为什么我们可以用这种方式使用cin,当x是我们input到键盘的任何值时?
我已经redirect“cin”从文件stream中读取cin.rdbug(inF.rdbug())当我使用提取操作符时,它读取直到它达到一个空格字符。 是否有可能使用另一个分隔符? 我经历了cplusplus.com的API,但没有find任何东西。
假设我们有一个代码: int main() { char a[10]; for(int i = 0; i < 10; i++) { cin>>a[i]; if(a[i] == ' ') cout<<"It is a space!!!"<<endl; } return 0; } 如何在标准input中input空格符号? 如果你写空间,程序忽略! :(是否有任何符号组合(例如'\ s'或类似的东西),这意味着我可以从标准input使用我的代码“空间”?
这可能是一个非常简单的问题,但请原谅我,因为我是新的。 这是我的代码: #include <iostream> #include <string> #include <sstream> using namespace std; int main () { string name; int i; string mystr; float price = 0; cout << "Hello World!" << endl; cout << "What is your name? "; cin >> name; cout << "Hello " << name << endl; cout << "How old are you? […]
我将如何检查input是否真的是双重的? double x; while (1) { cout << '>'; if (cin >> x) { // valid number break; } else { // not a valid number cout << "Invalid Input! Please input a numerical value." << endl; } } //do other stuff… 上面的代码无限输出Invalid Input! 声明,所以它不会提示另一个input。 我想提示input,检查它是否合法…如果它是双重的,继续…如果不是双重的,再次提示。 有任何想法吗?
我需要下面的程序来获取用户input的全部内容,并将其input到string名称中: cout << "Enter the number: "; int number; cin >> number; cout << "Enter names: "; string names; getline(cin, names); 然而,在getline()命令之前使用cin >> number命令(我猜是这个问题),它不会允许我input名字。 为什么? 我听说过一个cin.clear()命令,但我不知道这是如何工作的,或者为什么这是必要的。