2017-02-18 3 views
-1
#include <iostream> 
#include <string> 
#include <sstream> 
using namespace std; 

std::wstring inputfield; 

void function(uint32_t val) 
{ 
    std::wstring keystring; 
    keystring = std::to_wstring(val);  
    inputfield = inputfield + keystring; 
    std::wstringstream s; 
    s << L"(" << inputfield << L") "; 
    std::wstring str = s.str(); 
    std::wcout << str << "\n"; 
    return; 
} 

int main() 
{ 
    uint32_t x ; 
    while(cin>>x) 
    { 
     function(x); 
     cout<< *(&x)<< endl; 
    } 
    return 0; 
} 

Я пытаюсь формат строки, чтобы получить выходной сигнал как (000) -000-000 или формат PHONENUMBER США, но я не в состоянии добиться этого, пожалуйста, помогите, спасибоКак достичь формата номера телефона C++: (000) -000-000?

ответ

2

Если вы хотите изменить строку 000000000 или simillar (и вы, даже если ввод - это число, просто преобразуйте его с помощью std::to_string), а затем просто добавьте несколько символов в нужные места.

std::string format_number(std::string str) { 
    if(str.size() != 9) { 
     throw std::logic_error{"Phone number is not 9-characters long"}; 
    } 

    str.insert(str.begin(), '('); 
    str.insert(str.begin() + 4, ')'); 
    str.insert(str.begin() + 5, '-'); 
    str.insert(str.begin() + 9, '-'); 

    return str; 
} 
+0

спасибо Kamil – Ravi

+0

@Ravi Я был бы рад, если бы вы отметили этот ответ, как правильно, если решить вашу проблему. :) –

0

Вы можете выделить номера входных телефонов, а затем передать такие структуры;

struct numbers {  
    int A; 
    int B; 
    int C; 
} // then get (A)-B-C 
+0

большое спасибо Oğuzhan Avcı – Ravi