在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;
}