2016-11-13 23 views
-4

小文字のqから大文字のQに簡単に変換できますか?do whileループC++でtoupperを使用するループ

私はtoupperのCバージョンを試しましたが、C++で動作するようにはできません。入力されたすべての文字が大文字になる必要があります。したがって、彼らはメインの選択肢の選択肢にリンクします。

たとえば、cをタイプするとCに変わり、Cがリンクされている関数にアクセスまたは使用できます。これまでそのまま

コード:

include <iostream> 
#include <stdlib.h> 
#include <string> 
#include "link.h" 

using namespace std; 

int main() 
{ 
    link obr; 
    string n; 
    long int x; 
    char choice; 

    do{ 
    cout << "C: Create/Add\n P: Display\nQ: Quit"; 
    cin >> choice; 

     if(choice == 'C'){ 
       cout << "Name"; 
       cin >> n; 
       cin >> x; 
       obr.push(n,x); 
     } 

    if (choice == 'P'){ 
     obr.display(); 
    } 
} while(choice != 'Q'); 

    return 0; 
} 
+0

あなたのコードを投稿し、今では広すぎるのです。 C関数はC++から呼び出すことができます –

+1

'std :: toupper'が動作するはずです。関連するヘッダーを含めることを忘れていませんか?あなたは[mcve]を作成し、 'std :: toupper'でコードがコンパイルされない理由を尋ねることができます:) < - 今のところより良い答えが得られます。最高の答えは' std :: toupper'です。 – Rakete1111

+0

I標準ライブラリ関数を使用せずに小文字または大文字を変換する宿題の割り当てがC++を学習するための入門カリキュラムの一部になると考えるでしょう。少なくともそれは私の日でした... –

答えて

1

だけ

#include <cctype> 

//... 

choice = std::toupper((unsigned char)choice); 

を書くには、変数choicecharを入力していることを条件とします。

本当にアルファベットが含まれていて、コントロール記号ではないことを確かめてください。

1

あなたの文字セットは、Cのtoupper()と互換性があることを確認できた場合、あなたはかなり自明、それを行うことができます。

std::string s = "this is a string"; 
std::transform(s.begin(), s.end(), s.begin(), ::toupper); 
関連する問題