C++ - 检查字符串是否为空
问题描述:
我真的很难得到这个。如果我的输入是空,我的意思是“回车键”(指空字符串,空格),我怎么可以检测到它使用C++?C++ - 检查字符串是否为空
#include <iostream>
#include <stack>
#include <map>
#include <string>
using namespace std;
int main()
{
string a;
cin>>a;
if(a.empty())
cout<<"I";
else
cout<<"V";
return 0;
}
如何打印“我”如果它是一个空字符串,它是如何工作的?
在此先感谢。
答
如果我理解正确的你:
如果你想检查如果提供的字符串空,只需使用
isspace()
功能。它检查字符串是否为空,空或空白。-
如果要接受空输入,只需使用
getline()
函数。std::string inputValue; std::getline (std::cin,name); cout << name;
功能
getline()
接受由默认空输入。
+1
谢谢你,我必须使用getline()函数。 @mateudu – inhaler
答
格式化的输入功能,即operator>>()
传统上开始跳过空白。 std::string
的输入运算符肯定会这样做。这可能不是你想要的。
您可以使用机械手std::noskipws
,例如禁用此行为,使用
if (std::cin >> std::noskipws >> a) {
std::cout << (a.empty()? "a is empty": "a is non-empty") << '\n';
}
然而,空白将在流中离开。你可能会想要ignore()
它。从它的声音,你真的想读一个线路输入,做一些特别的东西,如果它仅包含空格:
if (std::getline(std::cin, a)) {
std::cout << (std::any_of(a.begin(), a.end(),
[](unsigned char c){ return !std::isspace(c); })
? "a contains non-space characters"
: "a contains only spaces") << '\n';
}
如果输入的代码成功原样,'了'不会是空的。但是,输入可能会失败。不过,您应该始终验证输入是否成功。 –
如果'a''''really'_ empty(例如'''''''''''''''''''''',a.empty()''返回'true',没有其他什么,没有空格或任何东西)。 – ForceBru
我有点怀疑XY问题。检查“a”是否为“空”不是查看它是否被读取的正确方法。你应该验证* stream *状态;不是字符串状态。 'if(std :: cin >> a)...'或者你试图从'std :: cin'中取出一行*并确定它是否在空白之后是空的?这种情况稍微复杂一些。 – WhozCraig