我正在使用 Atoi 处理我的 If 语句
I'm struggling with my If-statement using Atoi
我正在尝试制作票证客户代码,目前正在显示我的 "customers"。我希望它是这样的,如果我输入 "blank, like nothing then enter" 我希望我自己的 DTA 文件中的所有客户都在我的输出中。换句话说就是显示,看看有哪些客户注册了。
void Customer::DisplayCustomer() {
cin.getline(buffer, MAXTEXT)
buffernr = atoi(buffer) //I need to convert text to numbers.
if (buffer[0]=='A' && buffer[1] == '[=10=]')
// (Here I have a function which displays everything) don't focus on this one
}
我要问的是,我必须输入什么,才能让我的代码理解我想为按下 Enter 而没有输入任何内容的人提供一个 if 语句,我的显示客户功能将 运行.我也尝试过 (If buffer[0]=='\n') 但这也行不通。
此代码检查缓冲区是否为空
#include <iostream>
int MAXTEXT{300};
int main() {
char buffer[MAXTEXT];
std::cin.getline(buffer, MAXTEXT);
if (buffer[0] == '[=10=]') {
std::cout << "Empty" << std::endl;
}
return 0;
}
std::string
的更好解决方案是
#include <string>
#include <iostream>
int main() {
std::string buffer;
std::getline(std::cin, buffer);
if (buffer.empty()) {
std::cout << "Empty" << std::endl;
}
return 0;
}
您似乎想对您的用例使用 std::getline()
而不是 std::istream::getline()
:
void Customer::DisplayCustomer() {
std::string buffer;
std::getline(std:cin,buffer);
std::istringstream iss(buffer);
int buffernr;
if(!(iss >> buffernr)) { // This condition would be false if there's no numeric value
// has been entered from the standard input
// including a simple ENTER (i.e. buffer was empty)
// (Here i have a function which displays everything) don't focus on this
// one
}
else {
// Use buffernr as it was parsed correctly from input
}
}
我正在尝试制作票证客户代码,目前正在显示我的 "customers"。我希望它是这样的,如果我输入 "blank, like nothing then enter" 我希望我自己的 DTA 文件中的所有客户都在我的输出中。换句话说就是显示,看看有哪些客户注册了。
void Customer::DisplayCustomer() {
cin.getline(buffer, MAXTEXT)
buffernr = atoi(buffer) //I need to convert text to numbers.
if (buffer[0]=='A' && buffer[1] == '[=10=]')
// (Here I have a function which displays everything) don't focus on this one
}
我要问的是,我必须输入什么,才能让我的代码理解我想为按下 Enter 而没有输入任何内容的人提供一个 if 语句,我的显示客户功能将 运行.我也尝试过 (If buffer[0]=='\n') 但这也行不通。
此代码检查缓冲区是否为空
#include <iostream>
int MAXTEXT{300};
int main() {
char buffer[MAXTEXT];
std::cin.getline(buffer, MAXTEXT);
if (buffer[0] == '[=10=]') {
std::cout << "Empty" << std::endl;
}
return 0;
}
std::string
的更好解决方案是
#include <string>
#include <iostream>
int main() {
std::string buffer;
std::getline(std::cin, buffer);
if (buffer.empty()) {
std::cout << "Empty" << std::endl;
}
return 0;
}
您似乎想对您的用例使用 std::getline()
而不是 std::istream::getline()
:
void Customer::DisplayCustomer() {
std::string buffer;
std::getline(std:cin,buffer);
std::istringstream iss(buffer);
int buffernr;
if(!(iss >> buffernr)) { // This condition would be false if there's no numeric value
// has been entered from the standard input
// including a simple ENTER (i.e. buffer was empty)
// (Here i have a function which displays everything) don't focus on this
// one
}
else {
// Use buffernr as it was parsed correctly from input
}
}