c++ - 两个单词的长度相加产生错误答案(string0.length() + string1.length())

标签 c++ string

#include <iostream>

using std::cout;
using std::cin;
using std::string;

int main(){
    cout << "Welcome to the program!";
    cout << "\nWhat is your name? ";
    string name;
    cin >> name;
    cout << "Hi, " << name << ". ";
    cout << "Your name has " << name.length() << " letters!";
    cout << "\nWhat is your last name? ";
    string lastname;
    string *plastname;
    cin >> lastname;
    plastname = &lastname;
    cout << "Your full name is " << name.append(*plastname) << ".";
    cout << " Your full name has " << name.length() + lastname.length() << " letters!";
    return 0;
}

这是结果:

  • 欢迎来到这个项目!
  • 你叫什么名字?广告
  • 你好,adk。你的名字有 3 个字母!
  • 你姓什么?适应
  • 你的全名是 adkadkl。你的全名有 11 个字母!

3 + 4 = 11 怎么算?!

最佳答案

首先你执行 name.append(*plastname) ,它实际上将 lastname 附加到 name 中,使 name长度为 7 的字符串(使用您的示例输入)。

然后你打印 name.length() + lastname.length() 等于 7 + 4(记住你之前做的追加!),导致11 的结果。

也许附加 namelastname,您应该分别打印它们?喜欢

cout << "Your full name is " << name << ' ' << lastname << ".\n";

关于c++ - 两个单词的长度相加产生错误答案(string0.length() + string1.length()),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46115213/

相关文章:

c++ - 什么时候应该在 C++ 中使用 new 关键字?

java - 我们不能将字符串转换为整数并同时将其添加到其他整数并检查 if 条件是否等于另一个整数吗?

c - 如何仅从 C 中的 scanf 复制前 n 个字符

string - 从文件中获取倒数第二行

c++ - 循环帮助 : string vector to 3D char vector

C++ move 语义 - 包装遗留 C API

c++ - 从 .txt 文件填充数组

c++ valgrind双指针删除以防止内存泄漏

string - 如何让 golang 测试多行输出匹配

c++ - 如何在字符串中找到一个字符串并替换它?