【问题标题】:C++ multi strings in charchar中的C ++多字符串
【发布时间】:2015-09-03 08:57:39
【问题描述】:

我对 1 个字符中的多个字符串有问题

//------------------------------------------------
char* P1P2P3 = { FirstName,LastName,Email };
    if (strcmp(buffer5, P1P2P3) == 0)
          {
           //OK
          }
    else
          {
           //Not OK
          }
//----------------------------------------------

这是我的问题:

error C2440: 'initializing' : cannot convert from 'initializer-list' to 'char *'

我希望它变成这样

名字+姓氏+电子邮件

例如:

名字:马克斯

姓氏:TEST

电子邮件:Max@gmail.com

它应该是这样的: MaxTESTMax@Gmail.com

谢谢大家

【问题讨论】:

  • 你的意思是写char* P1P2P3[] = ...
  • 欢迎来到stackoverflow。恐怕您的问题需要更多信息才能获得答案:FirstName、LastName 和 Email 到底是什么?它们是 char* 变量吗?如果是这样,你想连接它们吗?在这种情况下,this question 可能会对您有所帮助。但无论哪种方式,尝试提供更多的上下文。祝你好运。

标签: c++ char


【解决方案1】:

选项 1:使用 std::string 而不是 char*

std::string FirstName,LastName,Email;
 ...
std::string P1P2P3 = FirstName+LastName+Email;

选项 2:使用std::stringstream

std::stringstream sout;
sout<<FirstName<<LastName<<Email;
char* P1P2P3 = sout.str().c_str();

选项 3:使用sprintf 将字符串打印到缓冲区中

选项 4:使用strcat 附加 2 个字符串,然后再次附加第 3 个。

【讨论】:

    【解决方案2】:

    为什么不采用 C++ 的方式呢。

    std::string P1P2P3 = FirstName + LastName + Email;
    if (P1P2P3 == buffer5) {
        // OK
    }
    else {
        // Not OK
    }
    

    【讨论】:

      【解决方案3】:

      C 风格字符串的唯一有效初始化是:

      const char* const P1P2P3 = "literal string";
      

      所有其他制作此类字符串的方法都不能通过初始化来完成。

      C++ 中的 C 风格字符串方式是

      char* P1P2P3 = new char[ENOUGH];
      sprintf(P1P2P3, "%s%s%s", FirstName, LastName, Email);
      //...
      delete[] P1P2P3;
      

      使用 C++ 字符串:

      std::string P1P2P3 = std::string(FirstName) + LastName + Email;
      if (buffer5 == P1P2P3) //...
      

      【讨论】:

      • "C 风格字符串的唯一有效初始化是:" const char* const P1P2P3 = FirstName LastName Email; 呢?
      • @molbdnilo 我想是这样,不幸的是,OP 没有告诉这些是什么。
      • 哪个版本的C有newdelete
      • @Shreevardhan:我改写了一下。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-02-20
      • 2021-07-19
      • 2013-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-12
      相关资源
      最近更新 更多