【问题标题】:Convert a single character to a string?将单个字符转换为字符串?
【发布时间】:2011-03-14 10:45:25
【问题描述】:

简单问题(C++):

如何将字符转换为字符串。 所以例如我有一个字符串 str = "abc";

我想提取第一个字母,但我希望它是一个字符串 而不是一个字符。

我试过了

string firstLetter = str[0] + "";

string firstLetter = & str[0]; 

两者都不起作用。想法?

【问题讨论】:

标签: c++ character


【解决方案1】:

在我的脑海中,如果您使用的是 STL,那么请执行以下操作:

string firstLetter(1,str[0]);

【讨论】:

  • 请注意,std::string 不是源自 STL 的标准库部分。
  • 添加此注释以清除语法指示的内容。这基本上是说,“我想要一个名为 firstLetterstring,它从 str 的第一个 ([0]) 元素开始抓取 1 字符。” en.cppreference.com/w/cpp/string/basic_string/basic_string
  • @kayleeFrye_onDeck - 实际上没有。它说“给我一份给定角色的副本”。它不能从str 的第一个元素“开始”,因为str 甚至没有被传递,而是str[0] 处的字符是按值传递的。如果您使用 2 而不是 1,您将获得第一个字符的两个副本,not 前两个字符。这直接来自您的链接,您可以在其中看到它的构造函数的形式 (2),记录为:2) 使用字符 ch 的计数副本构造字符串。如果 count >= npos,则行为未定义。
【解决方案2】:

你可以使用std::string(size_t , char )构造函数:

string firstletter( 1, str[0]);

或者你可以使用string::substr():

string firstletter2( str.substr(0, 1));

【讨论】:

    【解决方案3】:

    1) 使用std::stringstream

      std::string str="abc",r;
      std::stringstream s;
      s<<str[0];
      s>>r;
      std::cout<<r;
    

    2) 使用string ( size_t n, char c );constructor

      std::string str="abc";
      string r(1, str[0]);
    

    3) 使用substr()

      string r(str.substr(0, 1));
    

    【讨论】:

    • 另外,这也可以:string r(&amp;str[0], 1);string r(str.c_str(), 1);
    【解决方案4】:
    string s;
    char a='c';
    s+=a; //now s is "c"
    

    char a='c';
    string s(1, a); //now s is "c"
    

    【讨论】:

    • 我认为我的解决方案是正确的,不知道为什么我得到了-1。
    • std::string 没有接受单个 char 作为输入的构造函数,因此 string s(a); 将不起作用。但是,string s(1, a);string s(&amp;a, 1); 可以代替。
    【解决方案5】:

    使用string::substr

    在下面的示例中,f 将是在foo 中的偏移量 0 之后包含 1 个字符的字符串(即第一个字符)。

    string foo = "foo";
    string f = foo.substr(0, 1);
    
    cout << foo << endl; // "foo"
    cout << f << endl; // "f"
    

    【讨论】:

      【解决方案6】:
      char characterVariable = 'z';
      string cToS(1, characterVariable);
      
      //cToS is now a string with the value of "z"
      

      【讨论】:

        【解决方案7】:

        字符串首字母(str.begin(), str.begin() + 1);

        【讨论】:

          【解决方案8】:

          你可以试试这个效果很好

          string s="hello";
          
          string s1="";
          
          s1=s1+s[0];
          

          【讨论】:

            【解决方案9】:

            如果你想返回一个字符串,下面给出了两种方法:

            1.`return (string) "" + S[i];

            2.string s.push_back(originals[k];return s;

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2013-10-21
              • 2012-11-24
              • 1970-01-01
              • 2012-07-26
              • 2020-09-30
              • 2013-06-05
              • 2017-08-03
              • 2013-04-17
              相关资源
              最近更新 更多