【问题标题】:Get a string from a string element从字符串元素中获取字符串
【发布时间】:2015-11-28 20:49:43
【问题描述】:

我是 C++ 的新手。我有一个问题,如何从字符串元素(一个元素或字符)中获取字符串。 比如,我有一个名为hstd::string,它包含"HKK"。现在我有了另一个名为k 的字符串。现在我想从h获取元素编号1(k)并将其设置为k

#include<iostream>
#include<string>

using namespace std;

int main() {
   string h = "HKK";
   string k = h.at(1); //K
   cout << k << endl;
   return 0;
}

但是编译器(g++)给出的错误是:

 error: invalid conversion from ‘char’ to ‘const char*’ [-fpermissive]
 string k = h.at(1);
                  ^

编辑: 如果我这样做是为了这样的功能:

void out(string out) {
   cout << "Out : " << out << endl;
}

int main() {
   string h = "HKK";
   out(h.at(1)); //K
   return 0;
}

除此之外还有什么解决办法吗?

string k += h.at(1);
out(k);

请帮帮我! 谢谢 对不起英语不好

【问题讨论】:

标签: c++ string stl


【解决方案1】:

虽然我个人不喜欢你的 function 电话,但我仍然提供解决方案,如下所示:-

void out(string out) 
{
   cout << "Out : " << out << endl;
}

int main() 
{
   string h = "HKK";
   out(string().append(1,h.at(1))); //K
   return 0;
}

在这里,您创建一个临时的string 变量,其中包含string()append 1 个字符(即在您的情况下为h.at(1))。因此out 是函数out 中的一个字符串,它只有一个值,即K

但是,我始终建议您使用non-temporary,而不是在这种情况下使用临时地址。它们更安全,更不容易出错。

【讨论】:

  • 如果用作替换标记为//K 的行,这些都不会编译。最好扩展您的答案以显示该行的完全替换。
  • 你也可以使用string("").append({h.at(1)})
【解决方案2】:

如何从字符串元素(一个元素或字符)中获取字符串。比如,我有一个名为hstd::string,它包含“HKK”

要么你使用std::string::at

std::string h = "HKK";
std::string k;
k += h.at(1); //K

或者你使用std::string::operator[]:

k += h[1];

现在我有另一个string,名为k。现在我想从h 中获取元素编号 1(k) 并将其设置为 'k'。

要么你使用std::string::replace

std::string k = "HkK";
k.replace( 1, 1, "k" );

或者你使用std::string::operator[]:

k[1] = 'k';

【讨论】:

    猜你喜欢
    • 2019-01-28
    • 2014-09-20
    • 2021-11-26
    • 2019-03-04
    • 2013-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多