ページ 1 / 1
getlineについて
Posted: 2009年12月26日(土) 12:43
by toto
いつもお世話になっています。
C++を使ってプログラムを作っています。
インターネットとかで参考にしたソースに
std::getline(std::cin, str);というものがありました。
string strで定義されています。
getline関数からchar型の変数aに代入したいんですが
stringとcharは互換性がないためかエラーが出てしまいます。
error C2440:'char *' から 'std::string' に変換できません。
何か方法はないでしょうか?
char moji[100];
std::string str;
printf("入力してください>>");
std::getline(std::cin, str); //変換ができないため2回同じものを入力する状態になっている
scanf("%s",moji);
std::cout << "数字:";
c=std::count_if(str.begin(), str.end(), is(&std::isdigit));
printf("%d個\n",c);
{
while(moji!='\0'){
if(moji[i-1]==moji){
if(sw==0){
printf("出力:%c%cが1つあります\n",moji[i-1],moji[i-1]);
sw=1;
}
}
else{
if(sw==1)
sw=0;
}
i++;
}}
ex.
入力してください>>888
888 //←1回だけ入力する方法はないでしょうか?説明下手ですいません…
数字:3個
出力:88が一つあります
Re:getlineについて
Posted: 2009年12月26日(土) 12:59
by たかぎ
> getline関数からchar型の変数aに代入したいんですが
よくわかりませんが、こういうことでしょうか?
std::cin.getline(&a, 1);
ただし、この場合だと、エラーチェックが面倒になりますよ。
Re:getlineについて
Posted: 2009年12月26日(土) 13:12
by toto
std::cin.getline(&a, 1);ですか?
エラーがいっぱいでてきました。
std::getline(std::cin, str);の値を
printfで出力は可能ですか?
printf("%s",str);のような感じで…
Re:getlineについて
Posted: 2009年12月26日(土) 13:15
by たいちう
printf("%s", str.c_str());
Re:getlineについて
Posted: 2009年12月26日(土) 13:18
by たかぎ
失礼。std::cin.getline(&a, 1);だとナル文字しか入りませんね。
ただ、エラーがいっぱいでるというのがよくわかりません。
それと、getlineでchar型の変数に直接値を読み込むのは無理かと思います。
> printf("%s",str);のような感じで…
strはstd::stringでしょうか?
それなら、
std::printf("%s", str.c_str());
とすればできます。
Re:getlineについて
Posted: 2009年12月26日(土) 13:20
by toto
できました!
printf("%s", str.c_str());とは意味的にはどんな感じなんでしょう?
Re:getlineについて
Posted: 2009年12月26日(土) 17:55
by toto
char a[100];
std::string str;
printf("入力してください>>");
std::getline(std::cin, str);
printf("%s\n", str.c_str());
a=str.c_str();
std::getline(std::cin, str);に入力されたものを
printf("%s\n", str.c_str());で出力できるようにはなりました。
このstr.c_str();を、aに代入したいので
a=str.c_str(); という形で組むと
error C2440: '=' : 'const char *' から 'char [100]' に変換できません。というエラーが出ます。
Re:getlineについて
Posted: 2009年12月26日(土) 18:23
by pooka
>a=str.c_str();
std::strcpy(a, str.c_str());
としてみてください。
Re:getlineについて
Posted: 2009年12月27日(日) 02:41
by toto
できました!!
ありがとうございます。
std::strcpyで(a, str.c_str()); という表現があるんですね。
RyuJin.slnが実行できない
Posted: 2010年1月04日(月) 23:42
by KAO
初歩的な質問で申し訳ありません。
龍神録プログラミングの館の第1章で、オブジェクトをダウンロードし、1章のフォルダの中にあるRyuJin.slnを実行してみたのですが、その際に、Visual Studio 変換ウィザードと書かれたウインドウが開き、以下のメッセージが表示されました。
「現在開いているソリューションまたはプロジェクトは旧バージョンのVisual Studioで作成されたものです。このバージョンで使用される形式に変換してください。」
「次へ」のボタンを押すと「変換準備完了」と表示されたのですが、「完了」のボタンを押すと、さらに以下のメッセージが表示され、結局RyuJin.slnは実行できませんでした。
「ソリューションファイル
'C:\Users\kaoru\AppData\Local\Temp\Temp1_project.zip\project\1章\Ryujin.slh'は変更できないため、このファイルを変換できません。このソリューションを変換するためには、ソリューションファイルのアクセス許可を変更して、ファイルを変更したり開いたりできるようにしてください。」
どのようにすれば、RyuJin.slnが実行できるようになるのか教えてもらえると大変助かります。
環境
OS : Windows7
コンパイラ名 : VC++ 2008Express Edition
Re:RyuJin.slnが実行できない
Posted: 2010年1月04日(月) 23:53
by SooA
>Temp1_project.zip
zipファイルは圧縮されたファイルですので
解凍してから使用しましょう。
Re:RyuJin.slnが実行できない
Posted: 2010年1月05日(火) 00:46
by KAO
解凍したら実行できました。
本当ありがとうございます。