visualc++字符串和char * C类型字符串
visual C++ String and char * c stype strings
我有一个使用字符数组作为字符串的c库,我想在我的代码上使用c++ std::string,有人能帮助我如何在char * c风格字符串和STL库字符串之间转换吗?
例如:
char *p="abcdef";
string p1;
和
string x="abc";
char *x1;
如何将p转换为p1, x转换为x1
使用string的赋值操作符从char *:
p1 = p;
使用string的c_str()方法返回const char *:
x1 = x.c_str();
从char*到std::string:
char p[7] = "abcdef";
std::string s = p;
从std::string到char*:
std::string s("abcdef");
const char* p = s.c_str();
您可以从C字符串构造std::string
:
string p1 = p;
你可以从一个std::string
得到一个const char *
:
const char *x1 = x.c_str();
如果您想要一个char *
,您需要创建字符串的副本:
char *x1 = new char[x.size()+1];
strcpy(x1, x.c_str());
...
delete [] x1;
string
有一个构造函数和一个赋值操作符,将char const*
作为实参,因此:
string p1(p);
或
string p1;
p1 = p;
应该工作。另一种方式,您可以使用c_str()
方法从string
获得char const*
(不是char*)。这是
char const* x1 = x.c_str();
#include <string.h>
#include <stdio.h>
// Removes character pointed to by "pch"
// from whatever string contains it.
void delchr(char* pch)
{
if (pch)
{
for (; *pch; pch++)
*pch = *(pch+1);
}
}
void main()
{
// Original string
char* msg = "Hello world!";
// Get pointer to the blank character in the message
char* pch = strchr(msg, ' ');
// Delete the blank from the message
delchr(pch);
// Print whatever's left: "Helloworld!"
printf("%sn", msg);
}
相关文章:
- 如何检查模板类中的变量是否为字符串类型?
- C++类字符串类型的迭代器
- 如何将字符串指针数组转换为字符串类型的智能指针向量?
- 字符串类型的 2d 数组(C++;)
- 在 Rcpp 中的字符串类型之间转换时出错
- 为什么字符串类型会导致 c++ 程序无法运行?
- 如何将字符串类型转换为 ostringstream
- 当正斜杠运算符应用于C++中的字符串类型时,它会做什么
- 添加字符串类型的类成员会导致调用基类函数而不是子函数
- 我在 c++ 中声明字符串类型时遇到问题
- 对齐C++字符串类型问题 std::字符串到 TStr
- C++无符号字符串类型的正则表达式
- 当 JSON 值应为 INT 但以字符串类型发送时,RapidJSON 崩溃
- 如何使用 std::find 从向量的第一个元素中查找字符串<字符串对<字符串、字符串> >类型?
- 我想添加两个字符串类型的矩阵.用户将不会输入行数或列的数量.用户将仅输入数组
- 为什么数组(字符串类型)的大小是 24 字节,带有单个空格元素
- 如何根据定义的字符串类型在“std::cout”和“std::wcout”之间进行选择
- C++ 仅当模板为字符串类型时执行小写转换
- 字符串类型的 C++ 模板无法编译
- 如何使用新字符串而不是分配器创建自己的字符串类型向量?