関数にポインタでstring型の引数を渡し、その引数の文字列を操作したいです。
例えば文字列の一部の文字を変更する、などです。
しかし下記のようなテストコードで試行錯誤してみましたが、ポインタでstring型の引数を渡した場合、その引数の文字列の一部を操作する方法が分かりませんでした。
ポインタ渡しなので間接参照演算子* を使って *(str[0])
のような文字列の部分的操作ができないかと思いましたが、以下のように「間接演算子はポインタのオペランドが必要」的なコンパイルエラーが出てしまいます。
コンパイルの環境は以下の通りです。
clang version 12.0.0
Target: x86_64-apple-darwin19.6.0
Thread model: posix
どうすればポインタ渡しのstring型引数の文字列の部分的操作ができるか教えていただけたらと思います。よろしくお願いします。
c++
1#include <iostream> 2 3using namespace std; 4 5void myFunc(string*, char*); 6 7int main(){ 8 9 char myChr[] = "Hello, world"; 10 string myStr = "Hello, world"; 11 12 cout << myChr[0] << endl; //outputs "H" 13 cout << myStr[0] << endl; //outputs "H" 14 15 myFunc(&myStr, myChr); 16 17 return 0; 18} 19 20void myFunc(string* str, char* chr){ 21 22 cout << chr[0] << endl; //outputs "H" 23 cout << str[0] << endl; //outputs "Hello, world" 24 cout << *str << endl; //outputs "Hello, world" 25 cout << *(str[0]) << endl; //error: indirection requires pointer operand ('std::string' (aka 'basic_string<char>') invalid) 26 27 return; 28}
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/08/21 14:11