C++ 使用指针处理字符串
大家好,这是我的代码:C++ 使用指针处理字符串,c++,string,pointers,C++,String,Pointers,大家好,这是我的代码: #include <iostream> #include <string> using namespace std; void writeDown(string*t) { for (int i = 0; *(t+i)!=NULL; i++) { cout << *(t+i) <<endl; } } int main() { string t; getline(ci
#include <iostream>
#include <string>
using namespace std;
void writeDown(string*t)
{
for (int i = 0; *(t+i)!=NULL; i++)
{
cout << *(t+i) <<endl;
}
}
int main()
{
string t;
getline(cin, t);
string *wsk = &t;
writeDown(wsk);
return 0;
}
#包括
#包括
使用名称空间std;
无效减记(字符串*t)
{
对于(int i=0;*(t+i)!=NULL;i++)
{
Code 代码在很多层次上都是坏的,但是为了保持简单,回答你的问题,我可能会使用迭代器。如果你使用C++,就忘记了旧的C风格。
试试这个:
void writeDown(const string & t)
{
for (string::const_iterator it = t.begin();
it != t.end();
++it)
{
cout << *it << endl;
}
}
如果你坚持使用“数组”方法,你必须这样使用它,但是
void writeDown(const string & t)
{
for (int i = 0; t.c_str()[i] != NULL; i++)
{
cout << t.c_str()[i] << endl;
}
}
void writeDown(常量字符串&t)
{
for(int i=0;t.c_str()[i]!=NULL;i++)
{
你是不是想把std::string*
当作一个char*
。这不是它的工作原理,它们是非常不同的东西。哦,也许吧,那么正确的方法是什么呢?如果std::string
类似于const char*
,那么std::string*
类似于什么呢?@Frynio如果我的回答是这样的话为你工作,你能不能把它标记为被接受?是一样的东西(我说的“相同”是指速度)当我使用asterix&
或*
作为参数时?@Frynio过早优化是愚蠢的根源。专注于编写易于理解和维护的代码,然后根据评测结果进行优化。谢谢。我总是会做一些不重要的事情,专注于它们,而不是我的主要目标
void writeDown(const string & t)
{
for (int i = 0; t.c_str()[i] != NULL; i++)
{
cout << t.c_str()[i] << endl;
}
}