在c++中为字符串添加标点符号
Add punctuation to string in c++
我正在制作一个函数,如果字符串有 none,则向该字符串添加标点符号。我想我已经正确地完成了所有事情并且程序编译正常,但无论我将字符串设置为什么,总是会添加一个额外的标点符号。
源代码:
// Word Parsing
if(
str_input.substr(str_input.length()-1, 1) != "." ||
str_input.substr(str_input.length()-1, 1) != "?" ||
str_input.substr(str_input.length()-1, 1) != "!"
) {
cout << str_input.substr(str_input.length()-1, 1) << endl;
str_input = str_input+".";
}
您应该将 ||
替换为 &&
。
以您的示例为例,如果您的字符串以“?”结尾它与“.”不同,您将输入 if
语句。
您想确保您的字符与“.”不同。 AND“?” AND“!”。
if(
str_input.substr(str_input.length()-1, 1) != "." &&
str_input.substr(str_input.length()-1, 1) != "?" &&
str_input.substr(str_input.length()-1, 1) != "!"
)
{
// Do your stuff
}
我相信如果您使用 "not any of these" 逻辑,您的代码会更简单:
char ending_char = str_input.substr(str_input.length()-1, 1);
if ( ! ((ending_char == '!') || (ending_char == '.') || (ending_char == '?")))
{
cout << ending_char << endl;
str_input += ending_char;
}
我正在制作一个函数,如果字符串有 none,则向该字符串添加标点符号。我想我已经正确地完成了所有事情并且程序编译正常,但无论我将字符串设置为什么,总是会添加一个额外的标点符号。
源代码:
// Word Parsing
if(
str_input.substr(str_input.length()-1, 1) != "." ||
str_input.substr(str_input.length()-1, 1) != "?" ||
str_input.substr(str_input.length()-1, 1) != "!"
) {
cout << str_input.substr(str_input.length()-1, 1) << endl;
str_input = str_input+".";
}
您应该将 ||
替换为 &&
。
以您的示例为例,如果您的字符串以“?”结尾它与“.”不同,您将输入 if
语句。
您想确保您的字符与“.”不同。 AND“?” AND“!”。
if(
str_input.substr(str_input.length()-1, 1) != "." &&
str_input.substr(str_input.length()-1, 1) != "?" &&
str_input.substr(str_input.length()-1, 1) != "!"
)
{
// Do your stuff
}
我相信如果您使用 "not any of these" 逻辑,您的代码会更简单:
char ending_char = str_input.substr(str_input.length()-1, 1);
if ( ! ((ending_char == '!') || (ending_char == '.') || (ending_char == '?")))
{
cout << ending_char << endl;
str_input += ending_char;
}