在c ++中将标点符号添加到字符串中

时间:2015-03-12 22:24:28

标签: c++ mingw

如果字符串没有,我正在创建一个为字符串添加标点符号的函数。我认为我已经完成了所有事情并且程序编译得很好,但无论我将字符串设置为什么,总会添加额外的标点符号。

源代码:

// 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+".";
}

2 个答案:

答案 0 :(得分:2)

您应该将||替换为&&

以您的示例为例,如果您的字符串以“?”结尾它将与“。”不同,您将输入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
}

答案 1 :(得分:1)

我相信你的代码会更简单,你使用的是“不是这些”逻辑:

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