我正在尝试使用 c_str() 将 C++ 字符串对象转换为 C 风格的 NULL 终止字符串,然后尝试访问单个字符,因为它可以用于 c 风格的字符串。
#include <iostream>
#include <string>
using namespace std;
int main()
{
string str1("Alpha");
cout << str1 << endl;
const char * st = new char [str1.length()+1];
st = str1.c_str(); // Converts to null terminated string
const char* ptr=st;
// Manually Showing each character
// correctly shows each character
cout << *ptr << endl;
ptr++;
cout << *ptr << endl;
ptr++;
cout << *ptr << endl;
ptr++;
cout << *ptr << endl;
ptr++;
cout << *ptr << endl;
ptr++;
cout << "# Null Character :" << *ptr << endl;
// But below loop does not terminate
// It does not find '\0' i.e. null
while( ptr != '\0')
{
cout << "*ptr : "<< *ptr << endl;
ptr++;
}
return 0;
}
但似乎它没有在末尾添加 '\0' 并且循环不会终止。我哪里错了?
C 风格的字符串(例如 char* st="Alpha";)可以通过代码中显示的循环访问,但是当从字符串对象转换为 C 风格的字符串时,它不能。我该怎么做?