getlineについて

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
toto

getlineについて

#1

投稿記事 by toto » 15年前

いつもお世話になっています。

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について

#2

投稿記事 by たかぎ » 15年前

> getline関数からchar型の変数aに代入したいんですが

よくわかりませんが、こういうことでしょうか?
std::cin.getline(&a, 1);
ただし、この場合だと、エラーチェックが面倒になりますよ。

toto

Re:getlineについて

#3

投稿記事 by toto » 15年前

std::cin.getline(&a, 1);ですか?
エラーがいっぱいでてきました。

std::getline(std::cin, str);の値を
printfで出力は可能ですか?
printf("%s",str);のような感じで…

たいちう

Re:getlineについて

#4

投稿記事 by たいちう » 15年前

printf("%s", str.c_str());

たかぎ

Re:getlineについて

#5

投稿記事 by たかぎ » 15年前

失礼。std::cin.getline(&a, 1);だとナル文字しか入りませんね。
ただ、エラーがいっぱいでるというのがよくわかりません。
それと、getlineでchar型の変数に直接値を読み込むのは無理かと思います。

> printf("%s",str);のような感じで…

strはstd::stringでしょうか?
それなら、
std::printf("%s", str.c_str());
とすればできます。

toto

Re:getlineについて

#6

投稿記事 by toto » 15年前

できました!
printf("%s", str.c_str());とは意味的にはどんな感じなんでしょう?

toto

Re:getlineについて

#7

投稿記事 by toto » 15年前

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]' に変換できません。というエラーが出ます。

pooka

Re:getlineについて

#8

投稿記事 by pooka » 15年前

>a=str.c_str();
std::strcpy(a,&#160;str.c_str());
としてみてください。

toto

Re:getlineについて

#9

投稿記事 by toto » 15年前

できました!!
ありがとうございます。
std::strcpyで(a, str.c_str()); という表現があるんですね。

KAO

RyuJin.slnが実行できない

#10

投稿記事 by KAO » 15年前

初歩的な質問で申し訳ありません。
 
龍神録プログラミングの館の第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

SooA

Re:RyuJin.slnが実行できない

#11

投稿記事 by SooA » 15年前

>Temp1_project.zip
zipファイルは圧縮されたファイルですので
解凍してから使用しましょう。

KAO

Re:RyuJin.slnが実行できない

#12

投稿記事 by KAO » 15年前

解凍したら実行できました。
本当ありがとうございます。

閉鎖

“C言語何でも質問掲示板” へ戻る