###実現したいこと
ターミナルのPATH環境変数を;
が出てきたら改行するといった感じで出力したい。
/usr/bin;/bin;/usr/sbin;/sbin;/usr/local/bin
だったら
(1) /usr/bin (2) /bin (3) /usr/sbin (4) /sbin (5) /usr/local/bin
###問題点
エラー
kadai35.cpp: In function 'int main()': kadai35.cpp:30:39: error: cannot convert 'std::__cxx11::basic_string<char>' to '__gnu_cxx::__alloc_traits<std::allocator<char>, char>::value_type' {aka 'char'} in assignment 30 | path[i]=disrectry_names.substr(cnt[i],cnt[i+1]); //; ~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~ | | | std::__cxx11::basic_string<char> kadai35.cpp:32:35: error: cannot convert 'std::__cxx11::basic_string<char>' to '__gnu_cxx::__alloc_traits<std::allocator<char>, char>::value_type' {aka 'char'} in assignment 32 | path[0]=disrectry_names.substr(0,cnt[i]); // ~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~ | | | std::__cxx11::basic_string<char>
調べたらchar
が関係しているようですがどこでchar
が出てきたのかわかりません。
※文字列に関して学習したばかりです。
エラーの治し方を教えてください。
###コード
C++
1//PATH環境変数 2 3#define _CRT_SECURE_NO_WARNINGS 4#include<iostream> 5#include<cstdlib> 6#include<string> 7 8int main() 9{ 10 std::string disrectry_names=std::getenv("PATH"); //PATH環境変数を呼び出す 11 char separator; 12 std::string path; 13 int size=disrectry_names.size(); //文字列の長さ 14 int i; 15 int cnt[10]; 16 int cnti=0; 17 /*if(disrectry_names[0]=='/'){ //WindowsのVisual Studioのターミナルでの対応 18 separator=':'; //:は区切り文字 19 }else{ 20 separator=';'; 21 }*/ 22 for(i=1;i<=size;i++){ 23 if(disrectry_names[i]==';'){ //:が出てきたら改行する 24 cnt[i]=i; //;が出てきたらその添え字を保存する 25 cnti++; //改行の数計測 26 } 27 path[i]=disrectry_names.substr(cnt[i],cnt[i+1]); //;から次の;までの文字列取得 28 } 29 path[0]=disrectry_names.substr(0,cnt[i]); //最初だけ別 30 31 for(i=0;i<cnti;i++){ 32 std::cout<<"("<<i+1<<") "<<path[i]<<"\n"; 33 } 34 35 return 0; 36}
###環境
- Windows10
- Visual Stdio Code
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/26 09:12
2020/07/26 09:13