C++ 将 char 转换为 const char*
Posted
技术标签:
【中文标题】C++ 将 char 转换为 const char*【英文标题】:C++ convert char to const char* 【发布时间】:2012-01-16 06:00:13 【问题描述】:基本上我只想循环遍历一串字符,将每个字符拉出,每个字符都必须是 const char* 类型,这样我就可以将它传递给函数。这是一个例子。感谢您的帮助。
string thestring = "abc123";
const char* theval;
string result;
for(i = 0; i < thestring.length(); i++)
theval = thestring[i]; //somehow convert this must be type const char*
result = func(theval);
【问题讨论】:
你想用“a”调用func(),然后用“b”等等吗?为什么?这个问题很难回答。 【参考方案1】:你可以保留那个元素的地址:
theval = &thestring[i];
【讨论】:
您能否通过突出显示代码并按 Ctrl+K 来格式化您的代码【参考方案2】:我猜func
调用需要一个 C 字符串作为输入。在这种情况下,您可以执行以下操作:
string theString = "abc123";
char tempCString[2];
string result;
tempCString[1] = '\0';
for( string::iterator it = theString.begin();
it != theString.end(); ++it )
tempCString[0] = *it;
result = func( tempCString );
这将生成一个小的 C 字符串(以空字符结尾的字符数组),每次迭代的长度为 1。
for
循环可以使用索引(如您所写)或迭代器(如我所写)来完成,它会产生相同的结果;我更喜欢迭代器,只是为了与 STL 的其余部分保持一致。
这里要注意的另一个问题(尽管这些可能只是概括代码的结果)是result
将在每次迭代时被覆盖。
【讨论】:
【参考方案3】:string sym(1, thestring[i]);
theval = sym.c_str();
它为每个字符提供一个以 null 结尾的 const char*。
【讨论】:
不是你的反对者,但这并不能回答 OP 实际提出的问题。 这正是我需要做的 &thestring[i] 给出了 abc123, bc123, c123, 123, 23, 3 的结果。这给了我每个角色的感谢 天啊,非常感谢。出于某种原因,其他答案都不起作用,哈哈【参考方案4】:通常const char *
指向一个完整的以空字符结尾的字符串,而不是单个字符,所以我怀疑这是否真的是你想要做的。
如果真的是你想要的,答案很简单:
theval = &thestring[i];
如果函数确实需要一个字符串,但您想将单个字符的字符串传递给它,则需要一种稍微不同的方法:
char theval[2] = 0;
theval[0] = thestring[i];
result = func(theval);
【讨论】:
由于他已经在使用字符串,我猜他只是在寻找指向 char 的指针。 @LuchianGrigore,很明显该函数需要一个指向 char 的指针,但原因不明。将单个 char 作为参数传递是微不足道的,因此该函数更有可能接受一个指向以 null 结尾的字符串的指针。【参考方案5】:你可以获取那个元素的地址:
theval = &thestring[i];
【讨论】:
以上是关于C++ 将 char 转换为 const char*的主要内容,如果未能解决你的问题,请参考以下文章
c++ 从 LPCTSTR 转换为 const char *
C++ boost.python 无法将 const char* 转换为 str
C++ 从 'char' 到 'const char' 的无效转换
如何从 const char* 转换为 unsigned int c++