2

学習目標としてプログラムを Perl から C++ に移植しています。次のようなコマンドでテーブルを描画するルーチンにたどり着きました。

Perl: print "\x{2501}" x 12;

そして、「━」を 12 回描画します (「ボックス ドローイング ヘビー ホリゾンタル」)。

今、私はすでに問題の一部を理解しました:

Perl: \x{}, \x00        Hexadecimal escape sequence;
C++:  \unnnn

単一の Unicode 文字を印刷するには:

C++:  printf( "\u250f\n" );

しかし、C++ には 'x' 演算子に相当する機能がありますか、それとも for ループになりますか?


更新 提案されたソリューションでコンパイルしようとしている完全なソースコードを含めさせてください。コンパイラはエラーをスローします:

g++ -Wall -Werror project.cpp -o project
project.cpp: In function ‘int main(int, char**)’:
project.cpp:38:3: error: ‘string’ is not a member of ‘std’
project.cpp:38:15: error: expected ‘;’ before ‘s’
project.cpp:39:3: error: ‘cout’ is not a member of ‘std’
project.cpp:39:16: error: ‘s’ was not declared in this scope


#include <stdlib.h>
#include <stdint.h>
#include <stdio.h>
#include <string.h>
#include <iostream>

int main ( int argc, char *argv[] )
{
        if ( argc != 2 )   
        {
                fprintf( stderr , "usage: %s matrix\n", argv[0] );
                exit( 2 );
        } else {
                //std::string s(12, "\u250f" );
                std::string s(12, "u" );
                std::cout << s;
        }       
}
4

1 に答える 1

3

いいえ、C++ には "x" 演算子はありませんが、文字の繰り返しで文字列を作成できます。

std::string s(12, <any character>);

次に、以下のように印刷できます (「printf」は C から継承されているため、課題で使用するのは適切ではない可能性があります)。

std::cout << s;

(もちろん、12 だけでなく、任意の数を使用できます)

上記の更新の更新:

私はあなたのコードをわずかな変更だけでコンパイルできます (「u」は文字でなければならないため、「u」に置き換えられます)。私のコンパイラは Windows XP 用の GCC 4.6.2 (MINGW32 バージョン) です。どのOS/コンパイラを使用していますか?

于 2013-11-09T17:56:34.623 に答える